<html>
<head>
    <meta charset="UTF-8"/>
    <link href="../css/bootstrap.min.css" rel="stylesheet" type="text/css">
    <title>安装使用</title>
</head>
<body>
<iframe src="index.html"  style="position: absolute;right:0;top:1%;min-height: 300px;border-width: 0px">
</iframe>
<pre>
   <h2> 项目结构：</h2>
        /go-server 网关，支持win和Linux，启动go-chromedp-client(.exe) 默认api端口 8088，tcp 端口 8084,配置文件参考config.server.env
        /go-public 客户端
            1.推荐 win10/11 64位 ，安装最新chrome浏览器 ，将chrome.exe加到环境变量,设置-隐私和安全-网站设置-弹出窗口-允许
            2.config.env Route设置为 go-server 的 IP:端口 如 127.0.0.1:8084 ，默认http_port 80
            3.运行 启动所有.bat
        /umi-ocr  客户端,启动umi-ocr.exe
        /php  php案例和库
<hr/>
    <h2>Api说明</h2>

      <h3>服务端 </h3>
        <h4>/chromeGet</h4>
        <table class="table table-striped">
            <tr><th>参数</th><th>类型</th><th>说明</th><th>备注</th></tr>
            <tr><td>url</td><td>string</td><td>目标网站</td><td></td></tr>
            <tr><td>header</td><td>string base64</td><td>携带hearder</td><td>string数组转,json,再base64，下string base64同</td></tr>
            <tr><td>option</td><td>string base64</td><td>*跳转后选项操作</td><th>结构定义：
<pre style="background:#f0f0f0;white-space: pre;text-align: left" >
type Options struct {
	Ua          string   `json:"ua"`
	Timeout     int64    `json:"timeout"`
	Selector    string   `json:"selector"` // css选择器
	ImgShow     int      `json:"imgshow"`
	Proxy       string   `json:"proxy"`
	Js          []string `json:"js"`     //Selector出现后运行的js
	PreJs       []string `json:"prejs"`  //Selector出现前运行的js
	Headless    int      `json:"headless"`
	ContentType string   `json:"ContentType"`
	Debug       int      `json:"debug"`
	Input       string   `json:"input"`
	Button      string   `json:"button"`
	Wno         string   `json:"wno"`
	Reuse       int      `json:"reuse"`
}
</pre>
</th></tr>
            <tr><td>function</td><td>string</td><td>执行方法</td><td><pre style="background:#f0f0f0;">
                ChromeGet       默认方法，新请求会开一个标签页
                HostGet         每个网站host只有一个窗口，执行完才会处理下一个host请求
                ExistGet        使用已经打开的chrome浏览器，可抓取登陆后的数据
                Get             转发get请求
                Post            转发Post请求
            </pre></td> </tr>
            <tr><td>data</td><td>string base64</td><td>使用function为POST时,携带的body</td><td></td></tr>

<!--            <tr><td></td><td></th><td></td><td></td></tr>    -->

        </table>
        <h5>使用js时，添加dom节点id="js_result",返回结果为json字符串（数组）或者原样返回</h5>

    <h6>
    php调用api示例 HttpClient.php RpcChromedpGet
</h6>
<pre  style="background:#f0f0f0;white-space: pre;text-align: left" >
 static  $rpc_api='http://192.168.1.108:8088';
    //rpc 调用谷歌
    //$function 调用模式: 默认 '',ChromeGet  新标签页,SingleGet 单独浏览器支持代理,ExistGet在打开的浏览器里执行
    public  static function RpcChromedpGet($url,$header,$op=[],$ip=0,$port=0,$ua="",$function="",$data_body=[]){
        if (!self::$rpc_api){
            $serverInfo = GConfig::getInstance()->getConf('serverInfo');
            self::$rpc_api =$serverInfo['RpcServer']??'';
        }
        if (!self::$rpc_api){
            echo self::$rpc_api."未设置RpcServer";
            return ;
        }
        $api = self::$rpc_api."/chromeGet";

        if($ip&&$port){
            $op['proxy'] = "http=".$ip.":".$port;
        }
        if ($ua){
            $header[] = "User-Agent: ".$ua;
        }


        $data=[];
        $data['url']=$url;
        $data['header']=base64_encode(json_encode($header));
        $data['option']= base64_encode(json_encode($op));
        $data['function']=$function;
        if (isset($op['ContentType'])&&strpos($op['ContentType'],"json")!==false){
            $data['data']= base64_encode(json_encode($data_body));
        }else{
            $data['data']= base64_encode(http_build_query($data_body));
        }


        $content = self::post($api,$data);

        return $content ;
    }
</pre>
    <hr/>
     <h3>客户端Api</h3>
        <h4>/api/bookDownload</h4>
     <table class="table table-striped">
            <tr><th>参数</th><th>类型</th><th>说明</th><th>备注</th></tr>
            <tr><td>name</td><td>string</td><td>书名</td><td></td></tr>
            <tr><td>tags</td><td>string</td><td>保留的html标签,多个 , 分割,默认 h1,p </td><td></td></tr>
            <tr><td>url</td><td>string</td><td>开始章链接</td><td>循环部分用{}标记，如https://www.beqege.com/63327/84436{1}.html</td></tr>
           <tr> <td>end_url</td><td>string</td><td>结束章链接</td><td>循环部分用{}标记，如https://www.beqege.com/63327/84436{939}.html</td></tr>
       </table>
    返回：
        --Code 0正常
        --Msg 信息
        --Data.root_path 根目录
        --Data.root_path 相对路径
</pre>

</body>
</html>